package com.Offer;

/*
    面试题21：调整数组顺序使奇数位位于偶数前面
    输入一个整数数组，实现一个函数来调整该数组中数字的顺序
    使得所有的奇数位于数组的前半部分，所有的偶数位于位于数组的后半部分
    并保证奇数和奇数，偶数和偶数之间的相对位置不变
    测试用例：
 */
public class demo21 {
    public static void main(String[] args) {
        int[] input = new int[]{1,2,3,4,5,6};
        ReorderOddEven(input);
        for(int i : input){
            System.out.print(i+" ");
        }
    }

    public static void ReorderOddEven(int[] input){
        Reorder(input);
    }

    public static void Reorder(int[] input){
        if(input == null || input.length == 0){
            return;
        }
        int start = 0;
        int end = input.length-1;

        while(start < end){
            while(start<end && !isEven(input[start])){
                start++;
            }

            while(start<end && isEven(input[end])){
                end--;
            }

            if(start<end){
                int t = input[start];
                input[start] = input[end];
                input[end] = t;
            }
        }
    }

    //奇数为false，偶数为true
    public static boolean isEven(int n){
        return (n&1) == 0;
    }

}
